/**
 * 视频配置文件
 * 定义预设的视频列表和相关配置
 */

import type { VideoItem } from '../component/VideoSelector'

// 动态检测到的视频文件（基于实际文件夹内容）
export const DETECTED_VIDEOS: VideoItem[] = [
  {
    id: 'local-video-1',
    name: '视频一',
    url: '/videos/视频一.mp4',
    size: '11MB',
    description: '本地视频文件'
  },
  {
    id: 'local-video-2', 
    name: '视频二',
    url: '/videos/视频二.mp4',
    size: '6.1MB',
    description: '本地视频文件'
  },
  {
    id: 'local-video-3',
    name: '视频三', 
    url: '/videos/视频三.mp4',
    size: '38MB',
    description: '本地视频文件'
  }
]

// 预设视频列表（如果没有检测到本地视频时使用）
export const PRESET_VIDEOS: VideoItem[] = DETECTED_VIDEOS

// 支持的视频格式
export const SUPPORTED_VIDEO_FORMATS = [
  'video/mp4',
  'video/webm',
  'video/ogg',
  'video/avi',
  'video/mov',
  'video/wmv',
  'video/flv',
  'video/mkv'
]

// 视频文件大小限制 (100MB)
export const MAX_VIDEO_SIZE = 100 * 1024 * 1024

// 视频配置
export const VIDEO_CONFIG = {
  // 默认视频设置
  defaultVolume: 0.5,
  defaultPlaybackRate: 1.0,
  autoplay: false,
  loop: false,
  muted: false,
  
  // 缩略图设置
  thumbnailWidth: 160,
  thumbnailHeight: 90,
  thumbnailQuality: 0.7,
  
  // 上传设置
  maxFileSize: MAX_VIDEO_SIZE,
  supportedFormats: SUPPORTED_VIDEO_FORMATS,
  
  // 预览设置
  previewDuration: 10, // 预览时长（秒）
  seekPreviewPosition: 0.1 // 预览位置（10%处）
}

// 视频分类
export const VIDEO_CATEGORIES = {
  DEMO: 'demo',
  SAMPLE: 'sample',
  UPLOADED: 'uploaded',
  FAVORITE: 'favorite'
} as const

export type VideoCategory = typeof VIDEO_CATEGORIES[keyof typeof VIDEO_CATEGORIES]

// 扩展的视频项目接口
export interface ExtendedVideoItem extends VideoItem {
  category?: VideoCategory
  tags?: string[]
  uploadDate?: string
  fileSize?: number
  resolution?: string
  fps?: number
  bitrate?: string
}

// 获取视频分类的显示名称
export function getCategoryDisplayName(category: VideoCategory): string {
  switch (category) {
    case VIDEO_CATEGORIES.DEMO:
      return '演示视频'
    case VIDEO_CATEGORIES.SAMPLE:
      return '示例视频'
    case VIDEO_CATEGORIES.UPLOADED:
      return '上传视频'
    case VIDEO_CATEGORIES.FAVORITE:
      return '收藏视频'
    default:
      return '其他视频'
  }
}

// 检查视频格式是否支持
export function isVideoFormatSupported(file: File): boolean {
  return SUPPORTED_VIDEO_FORMATS.includes(file.type)
}

// 检查视频文件大小是否符合要求
export function isVideoSizeValid(file: File): boolean {
  return file.size <= MAX_VIDEO_SIZE
}

// 获取视频文件的错误信息
export function getVideoFileError(file: File): string | null {
  if (!isVideoFormatSupported(file)) {
    return `不支持的视频格式。支持的格式：${SUPPORTED_VIDEO_FORMATS.map(f => f.split('/')[1].toUpperCase()).join(', ')}`
  }
  
  if (!isVideoSizeValid(file)) {
    const maxSizeMB = Math.round(MAX_VIDEO_SIZE / (1024 * 1024))
    const fileSizeMB = Math.round(file.size / (1024 * 1024))
    return `视频文件过大。最大支持 ${maxSizeMB}MB，当前文件 ${fileSizeMB}MB`
  }
  
  return null
}
